﻿import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AppCommonModule } from '@app/shared/common/app-common.module';
import { UtilsModule } from '@shared/utils/utils.module';
import { AddMemberModalComponent } from 'app/admin/organization-units/add-member-modal.component';
import { AddRoleModalComponent } from 'app/admin/organization-units/add-role-modal.component';
import { FileUploadModule } from 'ng2-file-upload';
import { ModalModule, PopoverModule, TabsModule, TooltipModule, BsDropdownModule } from 'ngx-bootstrap';
import { BsDatepickerModule, BsDatepickerConfig, BsDaterangepickerConfig, BsLocaleService } from 'ngx-bootstrap/datepicker';
import { AutoCompleteModule, EditorModule, FileUploadModule as PrimeNgFileUploadModule, InputMaskModule, PaginatorModule } from 'primeng/primeng';
import { TableModule } from 'primeng/table';
import { TreeModule } from 'primeng/tree';
import { DragDropModule } from 'primeng/dragdrop';
import { TreeDragDropService } from 'primeng/api';
import { ContextMenuModule } from 'primeng/contextmenu';
import { SpinnerModule } from 'primeng/spinner';
import { InputSwitchModule } from 'primeng/inputswitch';
import { TabViewModule } from 'primeng/tabview';
import { InputTextareaModule } from 'primeng/inputtextarea';
import { MultiSelectModule } from 'primeng/multiselect';
import { AdminRoutingModule } from './admin-routing.module';
import { AuditLogDetailModalComponent } from './audit-logs/audit-log-detail-modal.component';
import { AuditLogsComponent } from './audit-logs/audit-logs.component';
import { HostDashboardComponent } from './dashboard/host-dashboard.component';
import { DemoUiComponentsComponent } from './demo-ui-components/demo-ui-components.component';
import { DemoUiDateTimeComponent } from './demo-ui-components/demo-ui-date-time.component';
import { DemoUiEditorComponent } from './demo-ui-components/demo-ui-editor.component';
import { DemoUiFileUploadComponent } from './demo-ui-components/demo-ui-file-upload.component';
import { DemoUiInputMaskComponent } from './demo-ui-components/demo-ui-input-mask.component';
import { DemoUiSelectionComponent } from './demo-ui-components/demo-ui-selection.component';
import { CreateEditionModalComponent } from './editions/create-edition-modal.component';
import { EditEditionModalComponent } from './editions/edit-edition-modal.component';
import { MoveTenantsToAnotherEditionModalComponent } from './editions/move-tenants-to-another-edition-modal.component';
import { EditionsComponent } from './editions/editions.component';
import { InstallComponent } from './install/install.component';
import { CreateOrEditLanguageModalComponent } from './languages/create-or-edit-language-modal.component';
import { EditTextModalComponent } from './languages/edit-text-modal.component';
import { LanguageTextsComponent } from './languages/language-texts.component';
import { LanguagesComponent } from './languages/languages.component';
import { MaintenanceComponent } from './maintenance/maintenance.component';
import { CreateOrEditUnitModalComponent } from './organization-units/create-or-edit-unit-modal.component';
import { OrganizationTreeComponent } from './organization-units/organization-tree.component';
import { OrganizationUnitMembersComponent } from './organization-units/organization-unit-members.component';
import { OrganizationUnitRolesComponent } from './organization-units/organization-unit-roles.component';
import { OrganizationUnitsComponent } from './organization-units/organization-units.component';
import { CreateOrEditRoleModalComponent } from './roles/create-or-edit-role-modal.component';
import { RolesComponent } from './roles/roles.component';
import { HostSettingsComponent } from './settings/host-settings.component';
import { TenantSettingsComponent } from './settings/tenant-settings.component';
import { EditionComboComponent } from './shared/edition-combo.component';
import { FeatureTreeComponent } from './shared/feature-tree.component';
import { OrganizationUnitsTreeComponent } from './shared/organization-unit-tree.component';
import { PermissionComboComponent } from './shared/permission-combo.component';
import { PermissionTreeComponent } from './shared/permission-tree.component';
import { RoleComboComponent } from './shared/role-combo.component';
import { InvoiceComponent } from './subscription-management/invoice/invoice.component';
import { SubscriptionManagementComponent } from './subscription-management/subscription-management.component';
import { CreateTenantModalComponent } from './tenants/create-tenant-modal.component';
import { EditTenantModalComponent } from './tenants/edit-tenant-modal.component';
import { TenantFeaturesModalComponent } from './tenants/tenant-features-modal.component';
import { TenantsComponent } from './tenants/tenants.component';
import { UiCustomizationComponent } from './ui-customization/ui-customization.component';
import { DefaultThemeUiSettingsComponent } from './ui-customization/default-theme-ui-settings.component';
import { Theme2ThemeUiSettingsComponent } from './ui-customization/theme2-theme-ui-settings.component';
import { Theme3ThemeUiSettingsComponent } from './ui-customization/theme3-theme-ui-settings.component';
import { Theme4ThemeUiSettingsComponent } from './ui-customization/theme4-theme-ui-settings.component';
import { Theme5ThemeUiSettingsComponent } from './ui-customization/theme5-theme-ui-settings.component';
import { Theme6ThemeUiSettingsComponent } from './ui-customization/theme6-theme-ui-settings.component';
import { Theme7ThemeUiSettingsComponent } from './ui-customization/theme7-theme-ui-settings.component';
import { Theme8ThemeUiSettingsComponent } from './ui-customization/theme8-theme-ui-settings.component';
import { Theme9ThemeUiSettingsComponent } from './ui-customization/theme9-theme-ui-settings.component';
import { Theme10ThemeUiSettingsComponent } from './ui-customization/theme10-theme-ui-settings.component';
import { Theme11ThemeUiSettingsComponent } from './ui-customization/theme11-theme-ui-settings.component';
import { Theme12ThemeUiSettingsComponent } from './ui-customization/theme12-theme-ui-settings.component';
import { CreateOrEditUserModalComponent } from './users/create-or-edit-user-modal.component';
import { EditUserPermissionsModalComponent } from './users/edit-user-permissions-modal.component';
import { ImpersonationService } from './users/impersonation.service';
import { UsersComponent } from './users/users.component';
import { NgxChartsModule } from '@swimlane/ngx-charts';
import { CountoModule } from 'angular2-counto';
import { TextMaskModule } from 'angular2-text-mask';
import { ImageCropperModule } from 'ngx-image-cropper';
import { NgxBootstrapDatePickerConfigService } from 'assets/ngx-bootstrap/ngx-bootstrap-datepicker-config.service';
import { TaskComponent } from './task/task.component';
import { CreateOrEditTaskModalComponent } from './task/create-or-edit-task-modal/create-or-edit-task-modal.component';
import { OutsourcingWorkflowComponent } from './outsourcingworkflow/outsourcingworkflow.component';
import { SupplierComponent } from './supplier/supplier.component';
import { CreateOrEditSupplierComponent } from './supplier/create-or-edit-supplier/create-or-edit-supplier.component';
import { TaskoutsouringComponent } from './taskoutsouring/taskoutsouring.component';
import { FlowInitProcessComponent } from './FlowInitProcess/FlowInitProcess.component';
import { FlowapplyordinarycreateComponent } from './flowapplyordinarycreate/flowapplyordinarycreate.component';
import { FlowapplyCrucialCreateComponent } from './flowapplyCrucialCreate/flowapplyCrucialCreate.component';
import { AdminBacklogComponent } from './backlog/backlog.component';
import { OrdinaryOutsourcingAuditComponent } from './OrdinaryOutsourcingAudit/OrdinaryOutsourcingAudit.component';
import { FlowworkauditmodelComponent } from './flowworkauditmodel/flowworkauditmodel.component';
import { MyapplyComponent } from './myapply/myapply.component';
import { OrdinaryCrucialAuditComponent } from './OrdinaryCrucialAudit/OrdinaryCrucialAudit.component';
import { OrderOutsourcedProcessingCreateComponent } from './OrderOutsourcedProcessingCreate/OrderOutsourcedProcessingCreate.component';
import { SafePipe } from './flowworkauditmodel/safe.pipe';
import { ProcessingOrderAuditComponent } from './ProcessingOrderAudit/ProcessingOrderAudit.component';
import { BaseDataItemComponent } from './BaseDataItem/BaseDataItem.component';
import { DataItemDetailCreateComponent } from './BaseDataItem/DataItemDetailCreate/DataItemDetailCreate.component';
import { DataItemCreateComponent } from './BaseDataItemType/DataItemCreate/DataItemCreate.component';
import { FlowConfigComponent } from './FlowConfig/FlowConfig.component';
import { ChoseUserComponent } from './FlowConfig/ChoseUser/ChoseUser.component';
import { ProcessingDeliveryCreateComponent } from './ProcessingDeliveryCreate/ProcessingDeliveryCreate.component';
import { ProcessingDeliverySubCreateComponent } from './ProcessingDeliveryCreate/ProcessingDeliverySubCreate/ProcessingDeliverySubCreate.component';
import { ProcessingDeliveryAuditComponent } from './ProcessingDeliveryAudit/ProcessingDeliveryAudit.component';
import { ProcessingOrderListComponent } from './ProcessingOrderList/ProcessingOrderList.component';
import { FlowworkauditDetailModelComponent } from './flowworkauditDetailModel/flowworkauditDetailModel.component';
import { OrdinaryOutsourcingDetailComponent } from './OrdinaryOutsourcingDetail/OrdinaryOutsourcingDetail.component';
import { OrdinaryCrucialDetailComponent } from './OrdinaryCrucialDetail/OrdinaryCrucialDetail.component';
import { ProcessingOrderDetailComponent } from './ProcessingOrderDetail/ProcessingOrderDetail.component';
import { ProcessingDeliveryDetailComponent } from './ProcessingDeliveryDetail/ProcessingDeliveryDetail.component';
import { OutsourcingApplicationListComponent } from './OutsourcingApplicationList/OutsourcingApplicationList.component';
import { AwaitQuotationWorkFlowComponent } from './AwaitQuotationWorkFlow/AwaitQuotationWorkFlow.component';
import { AwaitQuotationFormComponent } from './AwaitQuotationWorkFlow/AwaitQuotationForm/AwaitQuotationForm.component';
import { AwaitQuatationSupplierComponent } from './AwaitQuotationWorkFlow/AwaitQuatationSupplier/AwaitQuatationSupplier.component';
import { OrderCrucialProcessingCreateComponent } from './OrderCrucialProcessingCreate/OrderCrucialProcessingCreate.component';
import { from } from 'rxjs';

import { RadioButtonModule } from 'primeng/radiobutton';
import { PanelModule } from 'primeng/panel';
import { ToolbarModule } from 'primeng/toolbar';
import { CheckboxModule } from 'primeng/checkbox';
import { CoderuleComponent } from './coderule/coderule.component';
import { CreateoreditcoderulemodalComponent } from './coderule/createoreditcoderulemodal/createoreditcoderulemodal.component';
import { RuleFormatCreateOrEditComponent } from './RuleFormatCreateOrEdit/RuleFormatCreateOrEdit.component';
import { OutsourcingQuotationAuditComponent } from './OutsourcingQuotationAudit/OutsourcingQuotationAudit.component';
import { ChooseSupplierComponent } from './ChooseSupplier/ChooseSupplier.component';
import { FlowApprovalRecordComponent } from './FlowApprovalRecord/FlowApprovalRecord.component';
import { ProcessingOrderRecordListComponent } from './ProcessingOrderRecordList/ProcessingOrderRecordList.component';
import { OutsourcingApplyChangeCreateComponent } from './OutsourcingApplyChangeCreate/OutsourcingApplyChangeCreate.component';
import { OutsourcingApplyChangeAuditComponent } from './OutsourcingApplyChangeAudit/OutsourcingApplyChangeAudit.component';
import { OutsourcingApplyChangeDetailComponent } from './OutsourcingApplyChangeDetail/OutsourcingApplyChangeDetail.component';
import { CrucialOutsourcingApplyChangeCreateComponent } from './CrucialOutsourcingApplyChangeCreate/CrucialOutsourcingApplyChangeCreate.component';
import { CrucialOutsourcingApplyChangeAuditComponent } from './CrucialOutsourcingApplyChangeAudit/CrucialOutsourcingApplyChangeAudit.component';
import { OutsourcingApplyChangeListComponent } from './OutsourcingApplyChangeList/OutsourcingApplyChangeList.component';
import { CrucialProcessingContentApplyChangeCreateComponent } from './CrucialProcessingContentApplyChangeCreate/CrucialProcessingContentApplyChangeCreate.component';
import { ProcessingContentApplyChangeCreateComponent } from './ProcessingContentApplyChangeCreate/ProcessingContentApplyChangeCreate.component';
import { OrdinaryProcessingContentApplyChangeAuditComponent } from './OrdinaryProcessingContentApplyChangeAudit/OrdinaryProcessingContentApplyChangeAudit.component';
import { CrucialProcessingContentApplyAuditComponent } from './CrucialProcessingContentApplyAudit/CrucialProcessingContentApplyAudit.component';
import { ProcessingContentApplyChangeDetailComponent } from './ProcessingContentApplyChangeDetail/ProcessingContentApplyChangeDetail.component';
import { OutsourcingWorkFlowDetailFormComponent } from './OutsourcingWorkFlowDetailForm/OutsourcingWorkFlowDetailForm.component';
import { DeliveryOrderListComponent } from './DeliveryOrderList/DeliveryOrderList.component';
import { OutsourcingChangeListComponent } from './OutsourcingChangeList/OutsourcingChangeList.component';
import { ProcessingContentChangeListComponent} from './ProcessingContentChangeList/ProcessingContentChangeList.component';
@NgModule({
    imports: [
        FormsModule,
        ReactiveFormsModule,
        CommonModule,
        FileUploadModule,
        ModalModule.forRoot(),
        TabsModule.forRoot(),
        TooltipModule.forRoot(),
        PopoverModule.forRoot(),
        BsDropdownModule.forRoot(),
        BsDatepickerModule.forRoot(),
        AdminRoutingModule,
        UtilsModule,
        AppCommonModule,
        TableModule,
        TreeModule,
        DragDropModule,
        SpinnerModule,
        InputSwitchModule,
        TabViewModule,
        InputTextareaModule,
        MultiSelectModule,
        ContextMenuModule,
        PanelModule,
        RadioButtonModule,
        CheckboxModule,
        PaginatorModule,
        ToolbarModule,
        PrimeNgFileUploadModule,
        AutoCompleteModule,
        EditorModule,
        InputMaskModule,
        NgxChartsModule,
        CountoModule,
        TextMaskModule,
        ImageCropperModule
    ],
    declarations: [
        UsersComponent,
        PermissionComboComponent,
        RoleComboComponent,
        CreateOrEditUserModalComponent,
        EditUserPermissionsModalComponent,
        PermissionTreeComponent,
        FeatureTreeComponent,
        OrganizationUnitsTreeComponent,
        RolesComponent,
        CreateOrEditRoleModalComponent,
        AuditLogsComponent,
        AuditLogDetailModalComponent,
        HostSettingsComponent,
        InstallComponent,
        MaintenanceComponent,
        EditionsComponent,
        CreateEditionModalComponent,
        EditEditionModalComponent,
        MoveTenantsToAnotherEditionModalComponent,
        LanguagesComponent,
        LanguageTextsComponent,
        CreateOrEditLanguageModalComponent,
        TenantsComponent,
        CreateTenantModalComponent,
        EditTenantModalComponent,
        TenantFeaturesModalComponent,
        CreateOrEditLanguageModalComponent,
        EditTextModalComponent,
        OrganizationUnitsComponent,
        OrganizationTreeComponent,
        OrganizationUnitMembersComponent,
        OrganizationUnitRolesComponent,
        CreateOrEditUnitModalComponent,
        TenantSettingsComponent,
        HostDashboardComponent,
        EditionComboComponent,
        InvoiceComponent,
        SubscriptionManagementComponent,
        AddMemberModalComponent,
        AddRoleModalComponent,
        DemoUiComponentsComponent,
        DemoUiDateTimeComponent,
        DemoUiSelectionComponent,
        DemoUiFileUploadComponent,
        DemoUiInputMaskComponent,
        DemoUiEditorComponent,
        UiCustomizationComponent,
        DefaultThemeUiSettingsComponent,
        Theme2ThemeUiSettingsComponent,
        Theme3ThemeUiSettingsComponent,
        Theme4ThemeUiSettingsComponent,
        Theme5ThemeUiSettingsComponent,
        Theme6ThemeUiSettingsComponent,
        Theme7ThemeUiSettingsComponent,
        Theme8ThemeUiSettingsComponent,
        Theme9ThemeUiSettingsComponent,
        Theme10ThemeUiSettingsComponent,
        Theme12ThemeUiSettingsComponent,
        Theme11ThemeUiSettingsComponent,
        TaskComponent,
        CreateOrEditTaskModalComponent,
        OutsourcingWorkflowComponent,
        SupplierComponent,
        CreateOrEditSupplierComponent,
        TaskoutsouringComponent,
        FlowInitProcessComponent,
        FlowapplyordinarycreateComponent,
        FlowapplyCrucialCreateComponent,
        AdminBacklogComponent,
        OrdinaryOutsourcingAuditComponent,
        FlowworkauditmodelComponent,
        MyapplyComponent,
        OrdinaryCrucialAuditComponent,
        OrderOutsourcedProcessingCreateComponent,
        ProcessingOrderAuditComponent,
        BaseDataItemComponent,
        DataItemDetailCreateComponent,
        DataItemCreateComponent,
        FlowConfigComponent,
        ChoseUserComponent,
        SafePipe,
        CoderuleComponent,
        CreateoreditcoderulemodalComponent,
        ProcessingDeliveryCreateComponent,
        ProcessingDeliverySubCreateComponent,
        ProcessingDeliveryAuditComponent,
        FlowworkauditDetailModelComponent,
        OrdinaryOutsourcingDetailComponent,
        OrdinaryCrucialDetailComponent,
        ProcessingOrderDetailComponent,
        ProcessingDeliveryDetailComponent,
        RuleFormatCreateOrEditComponent,
        OutsourcingApplicationListComponent,
        ProcessingOrderListComponent,
        AwaitQuotationWorkFlowComponent,
        AwaitQuotationFormComponent,
        AwaitQuatationSupplierComponent,
        OutsourcingQuotationAuditComponent,
        ChooseSupplierComponent,
        FlowApprovalRecordComponent,
        OrderCrucialProcessingCreateComponent,
        ProcessingOrderRecordListComponent,
        OutsourcingApplyChangeCreateComponent,
        OutsourcingApplyChangeAuditComponent,
        OutsourcingApplyChangeDetailComponent,
        CrucialOutsourcingApplyChangeCreateComponent,
        CrucialOutsourcingApplyChangeAuditComponent,
        OutsourcingApplyChangeListComponent,
        CrucialProcessingContentApplyChangeCreateComponent,
        ProcessingContentApplyChangeCreateComponent,
        OrdinaryProcessingContentApplyChangeAuditComponent,
        CrucialProcessingContentApplyAuditComponent,
        ProcessingContentApplyChangeDetailComponent,
        OutsourcingWorkFlowDetailFormComponent,
        DeliveryOrderListComponent,
        OutsourcingChangeListComponent,
        ProcessingContentChangeListComponent
    ],
    exports: [
        AddMemberModalComponent,
        AddRoleModalComponent
    ],
    providers: [
        ImpersonationService,
        TreeDragDropService,
        { provide: BsDatepickerConfig, useFactory: NgxBootstrapDatePickerConfigService.getDatepickerConfig },
        { provide: BsDaterangepickerConfig, useFactory: NgxBootstrapDatePickerConfigService.getDaterangepickerConfig },
        { provide: BsLocaleService, useFactory: NgxBootstrapDatePickerConfigService.getDatepickerLocale }
    ]
})
export class AdminModule { }
